JSXHaxeGWTそれぞれのJavaScriptの使い方


概要

JavaScriptみたいなダメ言語触ってちゃダメです。

もうちょい高度な事を簡単にできるように、変換系の言語使いましょう。


っていうなかで、JSXとHaxeとGWTそれぞれを、弊社内でぶつくさ言いながら触ってみてる

2人で愚痴りながら、それぞれの違いとか特質とか書いてみてる。


重点として、global namespace pollutionと戦えるかどうか、というのが注目すべき点になります。



JSX

http://d.hatena.ne.jp/nishiohirokazu/20120531/1338456208

を参考に。

var jQuery = js.global["$"] as function(:string):variant;


これって、

既にブラウザに読み込んでるjQueryを読み込むって事になってる。

名前空間は、、?

・JSの読み込み方そのまま、<Script>タグで読み込まれている必要がある

・JSを文字列を介して読み出すことが出来る

・JSをオブジェクトとしてJSX内に初期化する方法自体は無い(パッケージラッピングなどが出来ない)

ので、global namespace pollutionと戦えない。

この辺は、ネットワークかフォルダから読む方法が無いと、話にならんぞ。

きっとあるんでしょう。、、、みつけらんないんだけど。



Haxe

http://blog.romatica.com/2012/01/09/haxe_jquery/

を参考に。

って調べてみたら、やたらとHaxeラッピングされているJavaScriptライブラリが多い。

jQuery、ProcessingJS、linq、、、linq!!? (二度見

http://gitorious.org/more

資産多いねー。

で、肝心のHaxeでjQuery、上記ライブラリの中身を追う事で調べてみ


調べてみ、、、てるとこ!! 読み方何通りもあるわこれ。

・コンパイル時に組み込んでしまう事で、global namespace pollutionと戦える。

http://stackoverflow.com/questions/3828423/haxe-for-javascript-without-global-namespace-pollution

・<script>タグからの読み込みも可能

・ライブラリを介してのオブジェクトとしてのJS読み込みが可能(書き途中



GWT

オワコンなので特に語る必要は無いが、一応。


・<script>タグからの読み込みが可能

・JSNIがあるので、JavaとJSのあいだを型をつかったまま行ったり来たりできる。

JSNI内でjsを読み込む事で、global namespace pollutionと戦える。

・GWT独自のJS読み込みスロットあり。Script読み込みを書く場所が限定される。

・JSに対して、Java由来のガッチガチの名前空間パッケージラッピングが可能

static,public,private final ほか



雑なまとめ

JSの読み込み方一つで、いろんなバリエーションがあるんですね!

個人的には名前空間に配慮できるものをきちんと使うのが、クソJSをマジックハンド介してとはいえ

触る上での、最低限ジェントルマン的な嗜みかなーと思います。



参考(にしてる途中の何か)

Haxe、2012/5時点でのFlashDevelopとの連携まとめ

http://robertbak.com/wordpress/2012/05/getting-started-with-haxe-for-javascript/


Haxe、JSからの値取得、xml読み込み

http://www.youtube.com/watch?v=KlJ4VSifpsY


Haxe、っていうかFlashとかとも連携できる(4年前、、、!!)

http://trac.puremvc.org/Demo_Haxe_JS_Flash_MultiplatformComm


Haxe、incrootっていう修飾子でjs読み込めるcompilerっぽいの。

http://code.google.com/p/haxetacy/wiki/postcompiler


Haxeの資産すげーーーーー。。